<?php

/*
 * Author: Davide Dal Bosco
 * Creation date: 09/01/2014
 */

/*
 * Rappresenta la classe di un utente non autenticato, e le funzioni a lui concesse
 */

class Utente_model extends CI_Model {

    public function __construct()
    {
        parent::__construct();
    }

    public function cerca_utente($user) {
    	
        $this->db->where('mail', $user);
		$query = $this->db->get_where('utenti_registrati');
        return $query;
    }

    public function tipo_utente($user)
    {
        $this->db->select('tipo_utente');
        $this->db->from('utenti_registrati');
        $this->db->where('mail', $user);
        $query = $this->db->get();
        return $query->row()->tipo_utente;
    }

    /*funzione per la generazione delle password*/
    public function password_generate()
    {
        $mypass='';
        // Imposto la lunghezza della password a 10 caratteri
        $pass_length = 10;

        // Creo un ciclo for che si ripete per il valore di $lung_pass
        for ($x = 1; $x <= $pass_length; $x++)
        {
            // Se $x è multiplo di 2...
            if ($x % 2){

                // Aggiungo una lettera casuale usando chr() in combinazione
                // con rand() che genera un valore numerico compreso tra 97
                // e 122, numeri che corrispondono alle lettere dell'alfabeto
                // nella tabella dei caratteri ASCII
                $mypass = $mypass . chr(rand(97,122));

                // Se $x non è multiplo di 2...
            }else{

                // Aggiungo alla password un numero compreso tra 0 e 9
                $mypass = $mypass . rand(0,9);

            }
        }
        return $mypass;

    }

    public function set_new_password($user,$pass,$time_plus)
    {
        $this->db->set('password', $pass);
        $this->db->where('mail', $user);
        $this->db->update('password');
        $this->set_new_expiry($user,$time_plus);
    }

    public function set_last_login($user) {
    	
        $this->load->helper('date');
        $datestring = "%Y-%m-%d %H:%i:%s";
        $time = time();
        $now = mdate($datestring, $time);

        $this->db->set('accesso', $now);
        $this->db->where('mail', $user);
        $this->db->update('utenti_registrati');
    }

    public function get_last_login($user)
    {
        $this->db->select('ultimo_login');
        $this->db->from('password');
        $this->db->where('mail', $user);
        $query = $this->db->get();
        return $query->row()->ultimo_login;
    }

    public function get_expiry($user)
    {
        $this->load->helper('date');
        $this->db->select('scadenza');
        $this->db->from('password');
        $this->db->where('mail', $user);
        $query = $this->db->get();
        $expiry = mysql_to_unix($query->row()->scadenza);
        return $expiry;
    }

    public function check_expiry($user)
    {
        $now = time();

        if (($now) > ($this->get_expiry($user)))
            return true;
        else
            return false;
    }

    public function to_expiry($user)
    {
        $day_to_expiry = floor(($this->get_expiry($user) - time()) / 86400); //ceil o floor
        return $day_to_expiry;
    }

    public function set_new_expiry($user,$time_plus)
    {
        $this->load->helper('date');
        $time = time() + $time_plus; //604800
        $datestring = "%Y-%m-%d";
        $new_expiry = mdate($datestring, $time);
        $this->db->set('scadenza', $new_expiry);
        $this->db->where('mail', $user);
        $this->db->update('password');
    }

    public function is_active($user)
    {
        $this->db->select('attivo');
        $this->db->from('password');
        $this->db->where('mail', $user);
        $query = $this->db->get();
        if (($query->row()->attivo) == 1)
            return true;
        else
            return false;
    }

    // activate account of a client
    public function activate_client($user)
    {
      $this->db->where('mail', $user)
	->update('password', array('attivo' => 1, 'tipo_login' => 0));
    }

    public function update_mail($mail,$old_mail){
        $this->db->set('mail',$mail);
        $this->db->where('mail',$old_mail);
        $this->db->update('password');
        $this->session->set_userdata('mail',$mail);
   }

   public function duplicate_mail($mail,$old_mail){
       $this->db->select('mail');
       $this->db->from('password');
       $this->db->where('mail', $mail);
       $this->db->where('mail !=', $old_mail);
       $query = $this->db->get();
       if ($query->num_rows() > 0)
            return true;
        else
            return false;
   }
   
   // metodo che recupera l'hash di un determinato utente, tramite la mail. (FUNZIONALITA' PROVVISORIA)
   public function give_passw_hash($mail){
       $this->db->select('password');
       $this->db->from('password');
       $this->db->where('mail', $mail);
       $this->db->where('tipo_login','0');
       $query = $this->db->get();
       
       foreach ($query->result_array() as $row)
         $hash=$row['password'];
         
       return $hash;

   }


}
/* End of file utente_model.php */
/* Location: ./application/models/login/utente_model.php */
/* EOF */
?>
